home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Extras / MIDI / camd-37.1 / development / examples / capture / capture_events.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-15  |  4.5 KB  |  152 lines

  1.  
  2. /* Events source file */
  3.  
  4. #include <exec/types.h>
  5. #include <intuition/intuition.h>
  6. #include <libraries/asl.h>
  7. #include <libraries/gadtools.h>
  8. #include <midi/camd.h>
  9. #include <string.h>
  10.  
  11. #include "capture.h"
  12. #include "/camdlistreq/listreq.h"
  13. #include "/camdlistreq/camdlists.h"
  14.  
  15. #include <clib/gadtools_protos.h>
  16. #include <pragmas/gadtools_pragmas.h>
  17.  
  18. /* Prototypes */
  19.  
  20. BOOL EventFunc_CLEAR(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  21. BOOL EventFunc_LOAD(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  22. BOOL EventFunc_SAVE(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  23. BOOL EventFunc_ABOUT(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  24. BOOL EventFunc_QUIT(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  25. BOOL EventFunc_SETOUTPU(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  26. BOOL EventFunc_SETINPUT(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  27. BOOL EventFunc_SEND(struct TMData *, struct IntuiMessage *, TMOBJECTDATA *);
  28.  
  29. /* NewMenu UserData structures */
  30.  
  31. TMOBJECTDATA tmobjectdata_CLEAR = { EventFunc_CLEAR };
  32. TMOBJECTDATA tmobjectdata_LOAD = { EventFunc_LOAD };
  33. TMOBJECTDATA tmobjectdata_SAVE = { EventFunc_SAVE };
  34. TMOBJECTDATA tmobjectdata_ABOUT = { EventFunc_ABOUT };
  35. TMOBJECTDATA tmobjectdata_QUIT = { EventFunc_QUIT };
  36. TMOBJECTDATA tmobjectdata_SETOUTPU = { EventFunc_SETOUTPU };
  37. TMOBJECTDATA tmobjectdata_SETINPUT = { EventFunc_SETINPUT };
  38.  
  39. /* NewGadget UserData structures */
  40.  
  41. TMOBJECTDATA tmobjectdata_SEND = { EventFunc_SEND };
  42.  
  43. /* Menu event functions */
  44.  
  45. static UBYTE             filename[ 256 ];
  46. extern struct MidiLink    *in_link,
  47.                         *out_link;
  48.  
  49. extern LONG                buffer_size;
  50. extern struct ListRequester    *lreq;
  51.  
  52. BOOL SetMidiLinkAttrs(struct MidiLink *mi, Tag tag, ...);
  53.  
  54. BOOL EventFunc_CLEAR(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  55. {
  56.     ClearBuffer();
  57.     GT_SetGadgetAttrs(
  58.         GadgetInfo_BYTESINB.Gadget,
  59.         WindowInfo_CAPTUREM.Window,
  60.         NULL,
  61.         GTNM_Number, buffer_size,
  62.         TAG_END );
  63.  
  64.     return(FALSE);
  65. }
  66.  
  67. BOOL EventFunc_ABOUT(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  68. {
  69.     TM_Request( imsg->IDCMPWindow,
  70.                 "Program Information",
  71.                 "MIDI Capture ©1993 Sylvan technical Arts\nWritten by Talin\n\nThis program captures all MIDI events into\na buffer (without timing information) and\nallows that data to be manipulated.",
  72.                 "Continue", NULL, NULL );
  73.     return(FALSE);
  74. }
  75.  
  76. BOOL EventFunc_QUIT(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  77.   {
  78.   return(TRUE);
  79.   }
  80.  
  81. BOOL EventFunc_SETOUTPU(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  82. {
  83.     char                *oldname;
  84.     UBYTE                 name[ 32 ];
  85.  
  86.     GetMidiLinkAttrs( out_link, MLINK_Location, &oldname, TAG_DONE );
  87.     if (oldname) strncpy( name, oldname, sizeof name - 1);
  88.     else name[0] = '\0';
  89.  
  90.     if (SelectCluster(    lreq, name, sizeof name,
  91.                         LISTREQ_Window,         imsg->IDCMPWindow,
  92.                         LISTREQ_TitleText,        "Select Output Link",
  93.                         LISTREQ_PositiveText,    "Select",
  94.                         LISTREQ_NegativeText,    "Cancel",
  95.                         TAG_END ))
  96.     {    SetMidiLinkAttrs( out_link, MLINK_Location, name, TAG_END );
  97.     }
  98.     return(FALSE);
  99. }
  100.  
  101. BOOL EventFunc_SETINPUT(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  102. {
  103.  
  104.     char                *oldname;
  105.     UBYTE                 name[ 32 ];
  106.  
  107.     GetMidiLinkAttrs( in_link, MLINK_Location, &oldname, TAG_DONE );
  108.     if (oldname) strncpy( name, oldname, sizeof name - 1);
  109.     else name[0] = '\0';
  110.  
  111.     if (SelectCluster(    lreq, name, sizeof name,
  112.                         LISTREQ_Window,         imsg->IDCMPWindow,
  113.                         LISTREQ_TitleText,        "Select Input Link",
  114.                         LISTREQ_PositiveText,    "Select",
  115.                         LISTREQ_NegativeText,    "Cancel",
  116.                         TAG_END ))
  117.     {    SetMidiLinkAttrs( in_link, MLINK_Location, name, TAG_END );
  118.     }
  119.     return(FALSE);
  120. }
  121.  
  122. BOOL EventFunc_LOAD(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  123. {
  124.     if (getfilename( TMData, "Load Buffer", filename, sizeof filename, imsg->IDCMPWindow, FALSE ))
  125.     {    LoadMIDI( TMData, filename );
  126.  
  127.         GT_SetGadgetAttrs(
  128.             GadgetInfo_BYTESINB.Gadget,
  129.             WindowInfo_CAPTUREM.Window,
  130.             NULL,
  131.             GTNM_Number, buffer_size,
  132.             TAG_END );
  133.     }
  134.     return(FALSE);
  135. }
  136.  
  137. BOOL EventFunc_SAVE(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  138. {
  139.     if (getfilename( TMData, "Save Buffer", filename, sizeof filename, imsg->IDCMPWindow, TRUE ))
  140.     {    SaveMIDI( TMData, filename );
  141.     }
  142.     return(FALSE);
  143. }
  144.  
  145. /* Gadget event functions */
  146.  
  147. BOOL EventFunc_SEND(struct TMData *TMData, struct IntuiMessage *imsg, TMOBJECTDATA *tmobjectdata)
  148. {
  149.     SendMIDI( TMData );
  150.     return(FALSE);
  151. }
  152.